import { getToken, setToken, removeToken } from '@/utils/auth'
import { login } from '@/api/user'
const state = {
  // 共享token状态
  token: getToken() // 初始化的时候 缓存没有就是没有 缓存中有呢 有！
}
const mutations = {
  // 更新token
  setToken(state, payload) {
    state.token = payload // 更新token数据
    // 同步更新到本地缓存
    setToken(payload)
  },
  // 退出登录的时候 应该清除vuex中的token 同步清除本地缓存的token
  removeToken(state) {
    state.token = null
    removeToken() // 删除本地缓存token
  }
}
const actions = {
  // 封装一个登录action
  async login(context, data) {
    const result = await login(data)
    // 因为axios默认给返回体加了一层data

    // 如果为true表示登录成功 取返回的token
    context.commit('setToken', result)

    // promise的then catch
    // async await
  }
}
export default {
  namespaced: true,
  state,
  mutations,
  actions
}
